const Controller = require('/pages/controllers/ControllerX').controller
const controllers = require('/pages/controllers/controllerIndex.js').controller;
const request = require('/utils/kzj.request.js');
const util = require('/utils/util.js');
App({
  controllers: controllers,
  requestApi: request.requestApi,
  util: util,
  onLaunch: function (option) {
    // wx.removeStorageSync('token')
    //获取token
    // let token = wx.getStorageSync('token') || '';
    // //优先判断token
    // if (token) {
    //   //延时判断微信服务器Session状态
    //   setTimeout(() => {
    //     wx.checkSession({
    //       success: () => {
    //         //session_key 未过期，并且在本生命周期一直有效
    //       },
    //       fail: () => {
    //         // session_key 已经失效，需要重新执行登录流程
    //         // this.GetLogin(false);
    //         wx.reLaunch({
    //           url: '/pages/login/index',
    //         })
    //       }
    //     });
    //   }, 1500);
    // } else {
    //   //无token，直接登录
    //   // this.GetLogin();
    //   wx.reLaunch({
    //     url: '/pages/login/index',
    //   })
    // }

    //异步更新 + 强制更新

    // wx.getUpdateManager 在 1.9.90 才可用，请注意兼容
    const updateManager = wx.getUpdateManager()

    updateManager.onCheckForUpdate(function (res) {
      // 请求完新版本信息的回调
      // console.log(res.hasUpdate)
      if (res.hasUpdate) {
        wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否马上重启小程序？',
          success: function (res) {
            if (res.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate()
            }
          }
        });
      }
    });

    updateManager.onUpdateReady(function () {
      wx.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否马上重启小程序？',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            updateManager.applyUpdate()
          }
        }
      });
    })

    updateManager.onUpdateFailed(function () {
      wx.showModal({
        title: '已有新版本',
        content: '新版本已经上线了，请删除当前小程序，重新搜索打开',
      })
    });

    // 获取手机系统信息
    wx.getSystemInfo({
      success: res => {
        //导航高度
        this.globalData.navHeight = res.statusBarHeight + 46;
      },
      fail(err) {
        console.log(err);
      }
    })

    //获取场景值
    let enterState = wx.getLaunchOptionsSync();
    this.globalData.scene = enterState.scene;
  },
  //登录请求
  GetLogin(flag) {
    if (flag == undefined || flag) {
      wx.showLoading({
        title: '登录中...',
        mask: true
      });
    }
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        Controller.appletGetOpenId({
          code: res.code
        }).then(result => {
          if (result.data.sessionKey) {
            this.globalData.sessionKey = result.data.sessionKey
          }
          if (result.data.sessionId) {
            wx.setStorageSync('token', result.data.sessionId)
          }
          // this.globalData.openId=result.data.openId
          wx.setStorageSync('openId', result.data.openId)
          if (this.tokenReadyCallback) {
            this.tokenReadyCallback(result);
          }

          if (flag == undefined || flag) {
            wx.hideLoading();
          }
        });

      }
    });
  },


  //公共变量
  globalData: {
    questionList: [],
    noticeList: [],
    IMG_URL: 'http://111.230.226.223/beauty-industry',
    serveList: [],
    openId: '',
    list: [{
        "text": "首页",
        "iconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842779764551843840.png",
        "selectedIconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842779872332873728.png",
      },
      {
        "text": "我的",
        "iconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842780166642991104.png",
        "selectedIconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842780178965856256.png",
      }
    ],
    list02: [{
        "text": "首页",
        "iconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842779764551843840.png",
        "selectedIconPath": "https://xinlingshoushangquan.oss-cn-shenzhen.aliyuncs.com/account/20210514/842779872332873728.png",
      },
      {
        "text": "订单",
        "iconPath": "/images/bar_order_icon_02.png",
        "selectedIconPath": "/images/bar_order_icon_01.png"
      },
      {
        "text": "我的",
        "iconPath": "/images/bar_my_icon_02.png",
        "selectedIconPath": "/images/bar_my_icon_01.png",
      }
    ],
    tags: {
      tag1: '',
      tag2: '',
      tag3: ''
    },
    scene: ""
  },
  //拨打电话
  calling: function (e) {
    console.log(e)
    wx.makePhoneCall({
      phoneNumber: e || this.globalData.mobile,
      success: function () {
        console.log("拨打电话成功！")
      },
      fail: function () {
        console.log("拨打电话失败！")
      }
    })
  },


  initWatch(_page) {
    if (!_page) {
      console.error('未检测到Page对象,请将当前page传入该函数');
      return false;
    }
    if (!_page.watch) { //判断是否有需要监听的字段
      console.error('未检测到Page.watch字段(如果不需要监听，请移除initWatch的调用片段)');
      return false;
    }
    let _dataKey = Object.keys(_page.data);
    Object.keys(_page.watch).map((_key) => { //遍历需要监听的字段
      _page.data['__' + _key] = _page.data[_key]; //存储监听的数据
      if (_dataKey.includes(_key)) { //如果该字段存在于Page.data中，说明合法
        Object.defineProperties(_page.data, {
          [_key]: { //被监听的字段
            enumerable: true,
            configurable: true,
            set: function (value) {
              let oldVal = this['__' + _key];
              if (value !== oldVal) { //如果新设置的值与原值不等，则触发监听函数
                setTimeout(function () { //为了同步,否则如果回调函数中有获取该字段值数据时将不同步,获取到的是旧值
                  _page.watch[_key].call(_page, oldVal, value); //设置监听函数的上下文对象为当前的Page对象并执行
                }.bind(this), 0)
              }
              this['__' + _key] = value;
            },
            get: function () {
              return this['__' + _key]
            }
          }
        })
      } else {
        console.error('监听的属性[' + _key + ']在Page.data中未找到，请检查~')
      }
    })
  },

})